class Student {
    String name;
    int age;
    public Student(String name,int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "姓名:" + this.name + " 年龄:" + age;
    }
}
public class Test {

    public static void main(String[] args) {
        //字符串的截取
        String str = "hellojava";
        //截取beginIndex下标后面的字符串
        String ret1 = str.substring(2);
        System.out.println(ret1);
        ////截取范围内的字符串 左闭右开 [)
        String ret2 = str.substring(1,3);
        System.out.println(ret2);
        //特殊转换
        //对象.trim() 去掉字符串中的左右空格,保留中间空格
        String str1 = "      agaaghaa agsga saga           ";
        String ret3 = str1.trim();
        System.out.println(ret3);
    }
//    public static void main11(String[] args) {
//        //多次分隔
//        String str2 = "name=zhangsan&age=18" ;
//        String[] s = str2.split("&");
//        for (int i = 0; i < s.length; i++) {
//            String[] tmp = s[i].split("=");
//            for (String ss:tmp) {
//                System.out.println(ss);
//            }
//        }
//    }

//    public static void main10(String[] args) {
//        //字符串的拆分
//        String str1 = "hello world hello java";
//        //通过一个符号分隔 对象.split(String regex) 拆分所有的regex
//        String[] ret1 = str1.split(" ");
//        for (String r:ret1) {//类型 类型名 : 数组名
//            System.out.println(r);
//        }
//        //限定分隔次数 对象.split(regex,limit)
//        String[] ret2 = str1.split(" ",2);//如果分隔号 少于限定次数 那么就有多少分隔多少
//        for (String s:ret2) {//类型 类型名 : 数组名
//            System.out.println(s);
//        }
//        //特殊的分隔符号
//        //1. 字符"|","*","+"都得加上转义字符，前面加上 "\\" .
//        //2. 而如果是 "\" ，那么就得写成 "\\\\" .
//        //3. 如果一个字符串中有多个分隔符，可以用"|"作为连字符.
//        String str = "192.168.1.1" ;
//        String[] result = str.split("\\.") ;//转义 代表.
//        for(String s: result) {
//            System.out.println(s);
//        }
//        System.out.println("------------------");
//        String str2 = "name=zhangsan&age=18" ;
//        String[] ret3 = str2.split("=|&") ;
//        for (int i = 0; i < ret3.length; i++) {
//            System.out.print(ret3[i] + " ");
//        }
//    }
//    public static void main9(String[] args) {
//        //替换
//        String str1 = "ababababsoghosg";
//        //替换对象中的所有x字符 对象.replace(oldChar 要更换的字符, newChar 更换成x字符) 没改变str1 创建了心新的变量
//        String ret1 = str1.replace('a','p');
//        System.out.println(ret1);
//        //替换对象中所有字符串 对象.replace(target "类中字符串",replacement "更改的字符串")
//        String ret2 = str1.replace("ab","kkkk");
//        System.out.println(ret2);
//        String ret3 = str1.replaceAll("ab","kkk");//同上
//        System.out.println(ret3);
//        //替换前面的字符串 对象.replaceFirst(regex "首个字符串",replacement "更改的字符串")
//        String ret4 = str1.replaceFirst("ab","qqqq");
//        System.out.println(ret4);
//    }

//    public static void main8(String[] args) {
//        //格式化
//        String s = String.format("%d-%d-%d",2019,9,14);
//        System.out.println(s);
//    }
//    public static void main7(String[] args) {
//        //字符串改成数组字符串.toCharArray() 使用数组接收
//        String s = "hello";
//        char[] chars = s.toCharArray();
//        for (char ch: chars) {
//            System.out.print(ch);
//        }
//        System.out.println();
//    }

//    public static void main6(String[] args) {
//    //大小写转换
//        //小写转大写 字符串.toUpperCase();使用一个String接收
//        String str1 = "hello";
//        String tmp1 = str1.toUpperCase();
//        System.out.println(tmp1);//转化大小写本质上只是创建了新的String 不是在原来字符串上修改
//        System.out.println(str1);
//        //大写转小写 字符串.toLowerCase();
//        String str2 = "HELLO";
//        String tmp2 = str2.toLowerCase();
//        System.out.println(tmp2);
//        System.out.println(str2);
//
//    }
//    public static void main5(String[] args) {
//        //转化
//        //数值和字符串转化
//        //数字转字符串 String.valueOf(数字类型)
//        String str1 = String.valueOf(123);
//        System.out.println(str1);
//        String str2 = String.valueOf('a');
//        System.out.println(str2);
//        String str3 = String.valueOf(1.2f);
//        System.out.println(str3);
//        String str4 = String.valueOf(12.5);
//        System.out.println(str4);
//        String str5 = String.valueOf(456l);
//        System.out.println(str5);
//        String str6 = String.valueOf(true);
//        System.out.println(str6);
//        String str7 = String.valueOf(new Student("张三",18));
//        System.out.println(str7);
//        System.out.println("---------------------");
//        //字符串转数字 包装类型.parseInt(字符串)
//        int a = Integer.parseInt("123");
//        System.out.println(a);
//        double b = Double.parseDouble("123");
//        System.out.println(b);
//    }
//    public static void main4(String[] args) {
//        String str1 = new String("hello");
//        //字符串查找
//        //charAt(int index) 调用该方法 输入下标返回下标对应的字符
//        char ch = str1.charAt(1);//e
//        System.out.println(ch);
//        //indexOf(char ch) 输入字符查找下标存在返回第一次出现下标 不存在返回0 不能越界访问
//        int index1 = str1.indexOf('e');//1
//        System.out.println(index1);
//        //indexOf(String str) 输入一个字符串进行查找存在返回存在的首字母下标 不存在返回-1
//        int index2 = str1.indexOf("llo");//2
//        System.out.println(index2);
//        //indexOf(char ch,int fromIndex)查找字符与从fromIndex位置开始查找 返回第一次出现 不存在返回-1
//        int index3 = str1.indexOf('h',1);//-1
//        System.out.println(index3);
//        //indexOf(String str,int fromIndex)查找字符串与从fromIndex位置开始查找 返回第一次出现 不存在返回-1
//        int index4 = str1.indexOf("llo",3);
//        System.out.println(index4);//-1
//        //从后往前找 字符或者字符串
//        System.out.println("-------------------");
//        //lastIndexOf(char ch);从后面往前寻找字符 存在返回下标 不存在返回-1
//        int index5 = str1.lastIndexOf('e');//1
//        System.out.println(index5);
//        //lastIndexOf(String str)//从后面往前寻找字符串 存在返回str第一次出现下标 不存在返回-1
//        int index6 = str1.indexOf("llo");//2
//        System.out.println(index6);
//        //lastIndexOf(char ch,int fromIndex) 从fromIndex指定位置往前找字符 存在返回下标 不存在返回-1
//        int index7 = str1.lastIndexOf('l',1);//-1
//        System.out.println(index7);
//        //lastIndexOf(String str,int fromIndex)从fromIndex指定位置往前找字符串 存在返回下标 不存在返回-1
//        int index8 = str1.lastIndexOf("llo",2);//只要存在 然后碰到首字符可以查找出来
//        System.out.println(index8);
//    }

//    public static void main3(String[] args) {
//        //比较大小 即判断ASCII码值是否相同 compareTo
//        String str1 = new String("hello");
//        String str2 = new String("Hello");
//        System.out.println(str1.compareTo(str2));//通过比较返回 两者差值
//        System.out.println(str1.compareToIgnoreCase(str2));//忽略大小写
//        System.out.println(str1.equals(str2));//
//        System.out.println(str1.compareToIgnoreCase(str2));//忽略大小写判断大小
//    }
//    public static void main2(String[] args) {
//        //String 函数的比较是否相同
//        String str1 = new String("hello");
//        String str2 = new String("hello");
//        //如果通过new String 对象无法直接使用== 进行比较
////        if(str1 == str2) {//错误写法 无法进行判断
////            System.out.println("相同！");
////        }
//        System.out.println(str1.equals(str2));//其中equal中String被改写 如果相同就返回true 反之返回false
//
//        //如果通过直接赋值可以进行比较
//        String str3 = "hello";
//        String str4 = "world";
//        if(str3 == str4) {//涉及常量池 当直接赋值时
//            // 第二个直接赋值 会先在堆上常量池比较 是否已经存在 如果存在则直接指向该字符串
//            System.out.println("相同");
//        }else {
//            System.out.println("不同");
//        }
//
//        System.out.println(str3.equals(str4));
//    }
//    public static void main1(String[] args) {
//        //String 构造方法：
//        String str1 = "hello";//常量串构造
//        String str2 = new String("java");//直接new String对象
//        char[] arr1 = {'a','b','c'};//字符数组构造
//        String str3 = new String(arr1);
//        System.out.println(str1);
//        System.out.println(str2);
//        System.out.println(str3);
//        String str4 = "a";//为空
//        System.out.println(str4.isEmpty());//为空返回true 不为空返回false
//        String str5 = null;//表示不指向任何一个位置 如果判断则报错
//        System.out.println(str5.isEmpty());
//    }
}
